package week_08;

/**
 * 680. 验证回文字符串 Ⅱ
 * 给定一个非空字符串 s，最多删除一个字符。判断是否能成为回文字符串。
 * <p>
 * <p>
 * <p>
 * 示例 1:
 * <p>
 * 输入: s = "aba"
 * 输出: true
 * 示例 2:
 * <p>
 * 输入: s = "abca"
 * 输出: true
 * 解释: 你可以删除c字符。
 * 示例 3:
 * <p>
 * 输入: s = "abc"
 * 输出: false
 */

public class ValidPalindrome_For_680 {
    public boolean validPalindrome(String s) {
        // for 挨个删，再判断是不是回文
        for (int i = 0; i < s.length(); i++) {
            String sub = deleteChar(s, i);
            if (isPalindRome(sub)) return true;
        }
        return false;
    }

    private boolean isPalindRome(String s) {
        int start = 0;
        int end = s.length() - 1;
        while (start < end) {
            if (s.charAt(start) != s.charAt(end)) return false;
            start++;
            end--;
        }
        return true;
    }

    private String deleteChar(String s, int i) {
        if (i == 0) {
            return s.substring(1);
        } else if (i == s.length() - 1) {
            return s.substring(0, i);
        } else {
            return s.substring(0, i) + s.substring(i + 1);
        }

    }
}
